#include <string>
#include <map>
#include <vector>
#include <iostream>
#include <sstream>
#include "../ext4.h"
#include "Template.h"


#ifndef EXT4_TEMPLATE_H
#define EXT4_TEMPLATE_H

#define Template_BOOT               0
#define Template_SUPER                   1
#define Template_GROUP               2
#define Template_INODE     3
#define Template_DIR_ENTRY 4
#define Template_EXTENT 5
#define Template_EXTENT_HEADER 6


//初始化模板
void ext4_template_init(){
    char *p;
    int i,n;
    int nowType,nowColor=0,beforeN=0;
    
    TemplateAdd(Template_SUPER){
         ext4_super_block *ap=(ext4_super_block *)p;
         TemplateReg(s_inodes_count); TemplateReg(s_blocks_count_lo); TemplateReg(s_first_data_block); TemplateReg(s_log_block_size);
          TemplateReg(s_blocks_per_group); TemplateReg(s_inodes_per_group);
     }
    TemplateAdd(Template_GROUP){
         ext4_group_desc *ap=(ext4_group_desc *)p;
         TemplateReg(bg_free_inodes_count_lo); TemplateReg(bg_free_blocks_count_lo); TemplateReg(bg_block_bitmap_lo); TemplateReg(bg_inode_bitmap_lo); TemplateReg(bg_inode_table_lo);TemplateReg(bg_used_dirs_count_lo);
    }    

   TemplateAdd(Template_INODE){
        ext4_inode *ap=(ext4_inode *)p;
       TemplateReg(i_mode);  TemplateReg(i_size_lo); TemplateReg(i_atime); TemplateReg(i_ctime); TemplateReg(i_mtime); TemplateReg(i_dtime); TemplateReg(i_gid);TemplateReg(i_uid); 
       TemplateReg(i_block); TemplateReg(i_size_high); TemplateReg(i_blocks_lo); 
   }
   
   
      TemplateAdd(Template_DIR_ENTRY){
         ext4_dir_entry *ap=(ext4_dir_entry *)p;                
         TemplateReg(inode); TemplateReg(rec_len); TemplateReg(name_len); TemplateReg(name); 
     }
      
     TemplateAdd(Template_EXTENT){
            ext4_extent *ap=(ext4_extent *)p;             
           TemplateReg(ee_block); TemplateReg(ee_len); TemplateReg(ee_start_hi); TemplateReg(ee_start_lo); 
     }
     
   TemplateAdd(Template_EXTENT_HEADER){
        ext4_extent_header *ap=(ext4_extent_header *)p;
       TemplateReg(eh_magic); TemplateReg(eh_entries);  TemplateReg(eh_max); TemplateReg(eh_depth);  TemplateReg(eh_generation);
   }

}

ext4_template_init();
    #endif /* Ext4_H */
